package com.zhugang.week11;

import java.util.HashMap;
import java.util.Map;

/**
 * @program algorithms
 * @description: climbStairs
 * @author: chanzhugang
 * @create: 2022/09/01 20:41
 */
public class ClimbStairs {

    /**
     * 70 爬楼梯
     *
     * @param n
     * @return
     */
    Map<Integer, Integer> cache = new HashMap<>();

    public int climbStairs(int n) {
        // 每次可以爬1或者2个台阶
        // 递归求解：子问题的求解方式和原问题一样，只是数据规模不一样
        if (n == 1) {
            return 1;
        }
        if (n == 2) {
            return 2;
        }
        if (cache.containsKey(n)) {
            return cache.get(n);
        }
        int res = climbStairs(n - 1) + climbStairs(n - 2);
        cache.put(n, res);
        return res;
    }
}